//
//  --      AAA
// |  |    F   B
//  --      GGG
// |  |    E   C
//  --      DDD
//
//
//
`include "include.v"
module seg7_decode (
  input  wire       en,
  input  wire [3:0] seg_in,
  output wire [6:0] seg_out
);

reg [6:0] seg_out_r;

assign seg_out = (en == 1'b1) ? seg_out_r : 7'b0;

always @(*) begin
  case (seg_in)
    //                      ABC_DEFG
    4'h0:    seg_out_r = `SEG_0;
             //////////
             //  AAA
             // F   B
             // 
             // E   C
             //  DDD
             //////////
    //                      ABC_DEFG
    4'h1:    seg_out_r = `SEG_1;
             //////////
             //
             //     B
             //
             //     C
             //
             //////////
    //                      ABC_DEFG
    4'h2:    seg_out_r = `SEG_2;
             //////////
             //  AAA
             //     B
             //  GGG
             // E
             //  DDD
             //////////
    //                      ABC_DEFG
    4'h3:    seg_out_r = `SEG_3;
             //////////
             //  AAA
             //     B
             //  GGG
             //     C
             //  DDD
             //////////
    //                      ABC_DEFG
    4'h4:    seg_out_r = `SEG_4;
             //////////
             //     
             // F   B
             //  GGG
             //     C
             //     
             //////////
    //                      ABC_DEFG
    4'h5:    seg_out_r = `SEG_5;
             //////////
             //  AAA
             // F    
             //  GGG
             //     C
             //  DDD
             //////////
    //                      ABC_DEFG
    4'h6:    seg_out_r = `SEG_6;
             //////////
             //  AAA
             // F    
             //  GGG
             // E   C
             //  DDD
             //////////
    //                      ABC_DEFG
    4'h7:    seg_out_r = `SEG_7;
             //////////
             //  AAA
             //     B
             // 
             //     C
             //     
             //////////
    //                      ABC_DEFG
    4'h8:    seg_out_r = `SEG_8;
             //////////
             //  AAA
             // F   B
             //  GGG
             // E   C
             //  DDD
             //////////
    //                      ABC_DEFG
    4'h9:    seg_out_r = `SEG_9;
             //////////
             //  AAA
             // F   B
             //  GGG
             //     C
             //  DDD
             //////////
    //                      ABC_DEFG
    4'hA:    seg_out_r = `SEG_A;
             //////////
             //  AAA
             // F   B
             //  GGG
             // E   C
             //  
             //////////
    //                      ABC_DEFG
    4'hB:    seg_out_r = `SEG_B;
             //////////
             //     
             // F    
             //  GGG
             // E   C
             //  DDD
             //////////
    //                      ABC_DEFG
    4'hC:    seg_out_r = `SEG_C;
             //////////
             //  AAA
             // F    
             // 
             // E    
             //  DDD
             //////////
    //                      ABC_DEFG
    4'hD:    seg_out_r = `SEG_D;
             //////////
             //     
             //     B
             //  GGG
             // E   C
             //  DDD
             //////////
    //                      ABC_DEFG
    4'hE:    seg_out_r = `SEG_E;
             //////////
             //  AAA
             // F    
             //  GGG
             // E    
             //  DDD
             //////////
    //                      ABC_DEFG
    4'hF:    seg_out_r = `SEG_F;
             //////////
             //  AAA
             // F    
             //  GGG
             // E    
             //     
             //////////
    //                      ABC_DEFG
    default: seg_out_r = `SEG_0;
  endcase
end

endmodule
